Jak spravne polapit objekt
Otázka od: Michal VOJTA
21. 7. 2004 0:03
Ahoj vsichni,
nedavno jsem resil s kolegou nasledujici problem:
Co je spravnejsi
1)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Check : TCheckBox;
begin
Check := Sender as TCheckBox;
end;
2)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Check : TCheckBox;
ChbName : String;
begin
ChbName := (Sender as TCheckBox).Name;
Check := TCheckBox(FindComponent( ChbName ));
end;
--
ahoj
Michal VOJTA
michal.vojta@iol.cz
Odpovedá: Petr Kuklik
21. 7. 2004 7:06
Ahoj,
ja si myslim, ze by to slo spise takto,
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Check : TCheckBox;
begin
if ( Sender is TCheckBox )
then Check := TCheckBox(Sender)
else Check := nil;
end;
Petr
>>> "Michal VOJTA" <michal.vojta@iol.cz> 21.7.2004 0:45:18 >>>
Ahoj vsichni,
nedavno jsem resil s kolegou nasledujici problem:
Co je spravnejsi
1)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Check : TCheckBox;
begin
Check := Sender as TCheckBox;
end;
2)
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Check : TCheckBox;
ChbName : String;
begin
ChbName := (Sender as TCheckBox).Name;
Check := TCheckBox(FindComponent( ChbName ));
end;
--
ahoj
Michal VOJTA
michal.vojta@iol.cz
Odpovedá: Lebeda David
26. 7. 2004 7:54
> Co je spravnejsi
>
> 1)
> procedure TForm1.CheckBox1Click(Sender: TObject);
> var
> Check : TCheckBox;
> begin
> Check := Sender as TCheckBox;
> end;
>
> 2)
> procedure TForm1.CheckBox1Click(Sender: TObject);
> var
> Check : TCheckBox;
> ChbName : String;
> begin
> ChbName := (Sender as TCheckBox).Name;
> Check := TCheckBox(FindComponent( ChbName ));
> end;
Ahoj,
podle me vedou oba zpusoby k temuz vysledku, nicmene prvni zpusob je urcite
efektivnejsi a setrnejsi (proc prohledavat pole komponent podle nazvu?). P.
Kuklik
navrhuje reseni s pomoci is misto as - to se mi libi nejvic, i kdyz zalezi na
tom, co
pozadujes. Pokud sender nebude TCheckBox, jestli ma vzniknout vyjimka (pak je
operator as na miste) nebo ne (pak delat kontrolu pres is ve sve rezii). To ze
by Sender
nebyl checkbox, se muze stat treba tak, ze nekdo nekde funkci CheckBox1Click
zavola
rucne z programu a da ji nesmyslny parametr. Otazka je, do jake miry to je
pravdepodobne.
David Lebeda
David Lebeda